<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        // 沙箱的意义  不同应用可能对window 存在污染 ,在切换应用的时候 需要清除之前的 激活之后 复活之前的
        // 方法一 window 快照

        class SnapshotSandBox{
            constructor(){
                this.modifyPropsMap={}
            }
            active(){
                this.windowSnapshot = {}
                // 给window 拍照每次激活重新拍照
                Object.keys(window).forEach(key => {
                    this.windowSnapshot[key] = window[key]
                })
                Object.keys(this.modifyPropsMap).forEach(key => {
                    window[key] = this.modifyPropsMap[key]
                })
            }
            inactive(){
                this.modifyPropsMap = {}
                // 清除window
                Object.keys(window).forEach(key => {
                    if(window[key] !== this.windowSnapshot[key]){
                        this.modifyPropsMap[key] = window[key]
                        window[key] = this.windowSnapshot[key]
                    }
                })
            }
        }


        let sandbox = new SnapshotSandBox()
        sandbox.active()
        window.a = 1 

    </script>
</body>

</html>